feat: Add distribution detection support to .sdkmanrc file#975
Conversation
There was a problem hiding this comment.
Pull request overview
This PR extends .sdkmanrc file support to automatically detect and use Java distribution identifiers from SDKMAN version strings (e.g., java=21.0.5-tem), making the distribution input optional when a distribution suffix is present.
Changes:
- Enhanced
.sdkmanrcparsing to extract both version and distribution identifier - Added SDKMAN-to-setup-java distribution mapping for 10 distributions (Temurin, Zulu, Corretto, GraalVM, Liberica, Microsoft, Oracle, SapMachine, JetBrains, Dragonwell)
- Made
distributioninput optional inaction.ymlwhen distribution can be detected from file - Updated return type of
getVersionFromFileContentfromstringtoVersionInfoobject containing version and optional distribution - Modified setup logic to prefer file-extracted distribution over input parameter
Reviewed changes
Copilot reviewed 6 out of 9 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| src/util.ts | Added VersionInfo interface, updated getVersionFromFileContent to return version and distribution, added mapSdkmanDistribution function with SDKMAN identifier mappings |
| src/setup-java.ts | Modified to handle optional distribution input, prioritize file-extracted distribution, refactored installation logic |
| action.yml | Updated distribution input to be optional with clarified description |
| tests/util.test.ts | Updated test assertions to match new VersionInfo return type, added tests for various distribution identifiers |
| .sdkmanrc.example | Added example file demonstrating supported SDKMAN distribution identifiers |
| .github/workflows/sdkmanrc-example.yml | Added workflow examples showing usage with and without distribution suffix |
| dist/setup/index.js | Compiled source changes for setup entry point |
| dist/cleanup/index.js | Compiled source changes for cleanup entry point |
| package-lock.json | Updated peer dependency flags (normal npm behavior) |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
9eddd18 to
d2b3ef8
Compare
|
would be great if someone could review this PR. Having to specify the JDK vendor twice is actually improvable. At the moment users have to specify the JDK vendor e.g. Temurin in the sdkman.rc file like "25.0.1-tem" so sdkman picks up the Temurin JDK and also explicitly add a distribution entry containing "temurin" in the github action as well. |
|
Addressed the review feedback and updated the PR description. The branch now includes |
|
@mahabaleshwars can I ask you for a review for this one? This feature will improve the java definition and will allow us distribution usage from |
Extends .sdkmanrc support to automatically detect Java distribution from SDKMAN identifiers (e.g., java=21.0.5-tem maps to temurin distribution). Makes distribution input optional when using .sdkmanrc with distribution suffix.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
e082345 to
02f9c1e
Compare
|
Rebased this branch on current main and tightened scope and docs. Dropped unrelated package-lock changes. Clarified distribution requirements for sdkmanrc inference in action metadata, README, and advanced usage docs. Re-ran util tests after rebase and they pass. |
|
Linking the tracking issue: this PR implements #971 (distribution detection from .sdkmanrc). Maintainers — adding |
- Map SDKMAN 'kona' identifier to the 'kona' distribution (added in actions#672) - Add a .sdkmanrc test case for the kona suffix - Convert the inline SDKMAN suffix mapping in advanced-usage.md to a table - Rebuild dist bundles Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…ution-support # Conflicts: # dist/setup/index.js # src/setup-java.ts
Bumps the github-actions group with 2 updates: [actions/setup-java](https://github.com/actions/setup-java) and [anthropics/claude-code-action](https://github.com/anthropics/claude-code-action). Updates `actions/setup-java` from 5.4.0 to 5.5.0 Release notes *Sourced from [actions/setup-java's releases](https://github.com/actions/setup-java/releases).* > v5.5.0 > ------ > > What's Changed > -------------- > > * chore: enforce pre-PR validation (aggregate scripts, git hooks, PR checklist) by [`@brunoborges`](https://github.com/brunoborges) in [actions/setup-java#1061](https://redirect.github.com/actions/setup-java/pull/1061) > * Bump github/codeql-action from 3 to 4 by [`@dependabot`](https://github.com/dependabot)[bot] in [actions/setup-java#1069](https://redirect.github.com/actions/setup-java/pull/1069) > * Bump actions/checkout from 6 to 7 by [`@dependabot`](https://github.com/dependabot)[bot] in [actions/setup-java#1068](https://redirect.github.com/actions/setup-java/pull/1068) > * Bump actions/setup-python from 5 to 6 by [`@dependabot`](https://github.com/dependabot)[bot] in [actions/setup-java#1067](https://redirect.github.com/actions/setup-java/pull/1067) > * Bump `@typescript-eslint/parser` from 8.61.1 to 8.62.0 by [`@dependabot`](https://github.com/dependabot)[bot] in [actions/setup-java#1062](https://redirect.github.com/actions/setup-java/pull/1062) > * feat: Add verify-signature plumbing and Temurin+Microsoft verification support by [`@johnoliver`](https://github.com/johnoliver) in [actions/setup-java#1060](https://redirect.github.com/actions/setup-java/pull/1060) > * Updated jetbrains test: https.request() now catches errors. This fixes leaking tests as well by [`@jmjaffe37`](https://github.com/jmjaffe37) in [actions/setup-java#1070](https://redirect.github.com/actions/setup-java/pull/1070) > * Fix arm64 e2e workflow tests mislabeled as x64 by [`@brunoborges`](https://github.com/brunoborges) with [`@Copilot`](https://github.com/Copilot) in [actions/setup-java#1073](https://redirect.github.com/actions/setup-java/pull/1073) > * feat: suppress Maven transfer progress via MAVEN\_ARGS by default (add show-download-progress input) by [`@brunoborges`](https://github.com/brunoborges) in [actions/setup-java#1053](https://redirect.github.com/actions/setup-java/pull/1053) > * feat: Disable interactiveMode in generated Maven settings.xml by [`@brunoborges`](https://github.com/brunoborges) with [`@Copilot`](https://github.com/Copilot) in [actions/setup-java#1052](https://redirect.github.com/actions/setup-java/pull/1052) > * Bump prettier from 3.6.2 to 3.9.1 by [`@dependabot`](https://github.com/dependabot)[bot] in [actions/setup-java#1066](https://redirect.github.com/actions/setup-java/pull/1066) > * chore(deps-dev): bump eslint-plugin-jest from 29.0.1 to 29.15.4 by [`@dependabot`](https://github.com/dependabot)[bot] in [actions/setup-java#1074](https://redirect.github.com/actions/setup-java/pull/1074) > * fix: Maven Toolchains grows unexpectedly by [`@Okeanos`](https://github.com/Okeanos) in [actions/setup-java#534](https://redirect.github.com/actions/setup-java/pull/534) > * dist: Support Tencent Kona JDK by [`@johnshajiang`](https://github.com/johnshajiang) in [actions/setup-java#672](https://redirect.github.com/actions/setup-java/pull/672) > * feat: Add set-default option by [`@gsmet`](https://github.com/gsmet) in [actions/setup-java#1017](https://redirect.github.com/actions/setup-java/pull/1017) > * docs: document problem matcher (and how to disable it), Maven Wrapper caching, and generated interactiveMode by [`@brunoborges`](https://github.com/brunoborges) in [actions/setup-java#1075](https://redirect.github.com/actions/setup-java/pull/1075) > * feat: Add distribution detection support to .sdkmanrc file by [`@lukaszgyg`](https://github.com/lukaszgyg) in [actions/setup-java#975](https://redirect.github.com/actions/setup-java/pull/975) > > New Contributors > ---------------- > > * [`@jmjaffe37`](https://github.com/jmjaffe37) made their first contribution in [actions/setup-java#1070](https://redirect.github.com/actions/setup-java/pull/1070) > * [`@gsmet`](https://github.com/gsmet) made their first contribution in [actions/setup-java#1017](https://redirect.github.com/actions/setup-java/pull/1017) > * [`@lukaszgyg`](https://github.com/lukaszgyg) made their first contribution in [actions/setup-java#975](https://redirect.github.com/actions/setup-java/pull/975) > > **Full Changelog**: <actions/setup-java@v5...v5.5.0> Commits * [`0f481fc`](actions/setup-java@0f481fc) feat: Add distribution detection support to .sdkmanrc file ([#975](https://redirect.github.com/actions/setup-java/issues/975)) * [`c4922bf`](actions/setup-java@c4922bf) docs: document problem matcher (and how to disable it), Maven Wrapper caching... * [`6657b99`](actions/setup-java@6657b99) feat: Add set-default option ([#1017](https://redirect.github.com/actions/setup-java/issues/1017)) * [`a50fdcc`](actions/setup-java@a50fdcc) dist: Support Tencent Kona JDK ([#672](https://redirect.github.com/actions/setup-java/issues/672)) * [`77ee41d`](actions/setup-java@77ee41d) fix: Maven Toolchains grows unexpectedly ([#534](https://redirect.github.com/actions/setup-java/issues/534)) * [`0765b15`](actions/setup-java@0765b15) chore(deps-dev): bump eslint-plugin-jest from 29.0.1 to 29.15.4 ([#1074](https://redirect.github.com/actions/setup-java/issues/1074)) * [`c712b2f`](actions/setup-java@c712b2f) Bump prettier from 3.6.2 to 3.9.1 ([#1066](https://redirect.github.com/actions/setup-java/issues/1066)) * [`733efae`](actions/setup-java@733efae) feat: Disable interactiveMode in generated Maven settings.xml ([#1052](https://redirect.github.com/actions/setup-java/issues/1052)) * [`6c4d4a5`](actions/setup-java@6c4d4a5) feat: suppress Maven transfer progress via MAVEN\_ARGS by default (add show-do... * [`324b333`](actions/setup-java@324b333) Fix arm64 e2e workflow tests mislabeled as x64 ([#1073](https://redirect.github.com/actions/setup-java/issues/1073)) * Additional commits viewable in [compare view](actions/setup-java@1bcf9fb...0f481fc) Updates `anthropics/claude-code-action` from 1.0.165 to 1.0.168 Release notes *Sourced from [anthropics/claude-code-action's releases](https://github.com/anthropics/claude-code-action/releases).* > v1.0.168 > -------- > > **Full Changelog**: <anthropics/claude-code-action@v1...v1.0.168> > > v1.0.167 > -------- > > **Full Changelog**: <anthropics/claude-code-action@v1...v1.0.167> > > v1.0.166 > -------- > > What's Changed > -------------- > > * Drop buffered inline comment when it is posted live ([#1405](https://redirect.github.com/anthropics/claude-code-action/issues/1405)) by [`@archievi`](https://github.com/archievi) in [anthropics/claude-code-action#1412](https://redirect.github.com/anthropics/claude-code-action/pull/1412) > * Use modern noreply email for co-author trailers by [`@tarunag10`](https://github.com/tarunag10) in [anthropics/claude-code-action#1369](https://redirect.github.com/anthropics/claude-code-action/pull/1369) > * fix(restore): handle symlinked CLAUDE.md paths during config snapshot by [`@syf2211`](https://github.com/syf2211) in [anthropics/claude-code-action#1441](https://redirect.github.com/anthropics/claude-code-action/pull/1441) > * fix: preserve repeated add-dir flags in claude args by [`@Jerry2003826`](https://github.com/Jerry2003826) in [anthropics/claude-code-action#1256](https://redirect.github.com/anthropics/claude-code-action/pull/1256) > * fix: propagate curl failures in install pipeline by [`@akhilesharora`](https://github.com/akhilesharora) in [anthropics/claude-code-action#1241](https://redirect.github.com/anthropics/claude-code-action/pull/1241) > * chore: fix prettier formatting by [`@ashwin-ant`](https://github.com/ashwin-ant) in [anthropics/claude-code-action#1463](https://redirect.github.com/anthropics/claude-code-action/pull/1463) > > New Contributors > ---------------- > > * [`@archievi`](https://github.com/archievi) made their first contribution in [anthropics/claude-code-action#1412](https://redirect.github.com/anthropics/claude-code-action/pull/1412) > * [`@syf2211`](https://github.com/syf2211) made their first contribution in [anthropics/claude-code-action#1441](https://redirect.github.com/anthropics/claude-code-action/pull/1441) > * [`@akhilesharora`](https://github.com/akhilesharora) made their first contribution in [anthropics/claude-code-action#1241](https://redirect.github.com/anthropics/claude-code-action/pull/1241) > > **Full Changelog**: <anthropics/claude-code-action@v1...v1.0.166> Commits * [`ba0aafd`](anthropics/claude-code-action@ba0aafd) chore: bump Claude Code to 2.1.204 and Agent SDK to 0.3.204 * [`0fe28cd`](anthropics/claude-code-action@0fe28cd) chore: bump Claude Code to 2.1.203 and Agent SDK to 0.3.203 * [`f87768c`](anthropics/claude-code-action@f87768c) chore: bump Claude Code to 2.1.202 and Agent SDK to 0.3.202 * [`58a2944`](anthropics/claude-code-action@58a2944) chore: fix prettier formatting ([#1463](https://redirect.github.com/anthropics/claude-code-action/issues/1463)) * [`beb753e`](anthropics/claude-code-action@beb753e) fix: propagate curl failures in install pipeline ([#1241](https://redirect.github.com/anthropics/claude-code-action/issues/1241)) * [`235b39b`](anthropics/claude-code-action@235b39b) fix: preserve repeated add-dir flags in claude args ([#1256](https://redirect.github.com/anthropics/claude-code-action/issues/1256)) * [`d060ddc`](anthropics/claude-code-action@d060ddc) fix(restore): handle symlinked CLAUDE.md paths during config snapshot ([#1441](https://redirect.github.com/anthropics/claude-code-action/issues/1441)) * [`0f07aee`](anthropics/claude-code-action@0f07aee) Use modern noreply email for co-author trailers ([#1369](https://redirect.github.com/anthropics/claude-code-action/issues/1369)) * [`a221ad2`](anthropics/claude-code-action@a221ad2) Drop buffered inline comment when it is posted live ([#1405](https://redirect.github.com/anthropics/claude-code-action/issues/1405)) ([#1412](https://redirect.github.com/anthropics/claude-code-action/issues/1412)) * See full diff in [compare view](anthropics/claude-code-action@558b1d6...ba0aafd) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- Dependabot commands and options You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore ` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore ` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore ` will remove the ignore condition of the specified dependency and ignore conditions
Summary
Extends the existing
.sdkmanrcsupport to automatically detect and use the Java distribution identifier from SDKMAN version strings (for example,java=21.0.5-tem).Related Issue
#971
Changes
.sdkmanrcparsing to extract both the version and the distribution identifiertem->temurinsem->semerualbba/dragonwell->dragonwellzulu->zuluamzn->correttograal/graalce->graalvmlibrca->libericams->microsoftoracle->oraclesapmchn->sapmachinejbr->jetbrainskona->konadistributioninput optional when.sdkmanrcincludes a supported distribution suffixdistafter the source changesUsage
Before (distribution required):
After (distribution auto-detected):
.sdkmanrc file:
Backward Compatibility
.sdkmanrcdoes not include a supported distribution suffix, thedistributioninput is still requiredTesting
npm run format-checknpm run lintnpm run buildnpm test -- --runInBand __tests__/util.test.tsnpm testlocally; all suites passed except one unrelated JetBrains network lookup failure in__tests__/distributors/jetbrains-installer.test.ts